//
// Created by zhuyijun on 2021/8/23.
//
/**
 * 使用虚函数的特性
 * 根据类的种类来觉得用虚函数
 *
 */
#include <iostream>
#include <string>
#include "acctabc.h"

using namespace std;
const int CLIENTS = 4;

int main() {

    AcctABC *p_clients[CLIENTS];
    string temp;
    long tempnum;
    double tempbal;
    char kind;
    for (int i = 0; i < CLIENTS; ++i) {
        cout << "Enter client's name: ";
        getline(cin, temp);
        cout << "Enter client's account number: $";
        cin>>tempnum;
        cout << "Enter opening balance: $";
        cin >> tempbal;
        cout << "Enter 1 for Brass Acount or 2 for BrassPlus Acount: ";
        while (cin >> kind && (kind != '1' && kind != '2')) {
            cout << "Enter either 1 or 2: ";
        }
        if (kind == '1') {
            p_clients[i] = new Brass(temp, tempnum, tempbal);
        } else {
            double tmax, trate;
            cout << "Enter the overdraft limit: $";
            cin >> tmax;
            cout << "Enter the interset rate as a decimal fraction: ";
            cin >> trate;
            p_clients[i] = new BrassPlus(temp, tempnum, tempbal, tmax, trate);
        }
        while (cin.get() != '\n') {
            continue;
        }
    }
    cout << endl;
    for (int i = 0; i < CLIENTS; ++i) {
        p_clients[i]->ViewAcct();
        cout << endl;
    }
    for (int i = 0; i < CLIENTS; ++i) {
        delete p_clients[i];
    }
    cout << "Done.\n";
    return 0;
}

